package com.yigerende.web;

import com.yigerende.model.Comment;
import com.yigerende.model.User;
import com.yigerende.model.Yhuser;
import com.yigerende.service.BlogService;
import com.yigerende.service.CommentService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.Mapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;

import javax.servlet.http.HttpSession;


@Controller
public class CommentController {


    @Autowired
    private CommentService commentService;

    @Autowired
    private BlogService blogService;


    //设置一个游客头像，后面我改成登陆获取用户头像
    @Value("${comment.avatar}")//设置的游客默认头像
    private String avatar;




    //当打开详情页面的时候先自动显示数据库已经有的评论信息
    //点击发布后也要到这里来重新刷新
    @GetMapping("/comments/{blogId}")
    public String comments(@PathVariable Long blogId, Model model){
        //从数据库查询到的评论信息渲染到页面
        model.addAttribute("comments",commentService.listCommentByBlogId(blogId));
        //刷新到blog里面定义的一个th:fragment="commentList"评论显示区域
         return "blog :: commentList";
    }



    /**
     * 上面的comments这个方法是用来刷新评论区域的
     * 下面post这个方法是发布评论的一系列操作
     * */



    //点击发布后去提交信息到这里,传递到数据库,又重定向到上面的方法，刷新评论区域
    //Comment这个里面有哪一篇博客的id
    @PostMapping("/comments")
    public String post(Comment comment, HttpSession session){
        //拿到用户评论的博客id
        Long blogId = comment.getBlog().getId();
        //把用户评论的博客传递给评论模型
        comment.setBlog(blogService.getBlog(blogId));

        /**
         * 后面我加一个用户登陆功能获取头像
         * */
        //判断用户是否登录
        Yhuser yhuser = (Yhuser) session.getAttribute("thUser");
        if (yhuser != null) {
            //登录，则用用户设置的头像
            comment.setAvatar(yhuser.getAvatar());
        } else {
            //是游客，使用默认的头像
            comment.setAvatar(avatar);
        }

        //管理员登录才不为空
        User user = (User) session.getAttribute("user");
        if(user != null){
            comment.setAvatar(user.getAvatar());//管理员的头像
            comment.setAdminComment(1);
        }
        //把用户输入的评论信息保存在数据库
        commentService.saveComment(comment);
        //重定向到上面的方法，就又刷新一下评论区域
         return "redirect:/comments/" + blogId;
    }

}
